package com.ruoyi.cs.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.Response;
import com.ruoyi.cs.domain.TRoll;
import com.ruoyi.cs.domain.vo.PageInfoParamVo;
import com.ruoyi.cs.domain.vo.TRollBackVo;
import com.ruoyi.cs.domain.vo.TRollHomePageVo;
import com.ruoyi.cs.domain.vo.TRollVo;
import com.ruoyi.common.core.domain.AjaxResult;

import javax.xml.crypto.Data;

/**
 * ROLL房间信息Service接口
 * 
 * @author ruoyi
 * @date 2021-03-25
 */
public interface ITRollService 
{
    /**
     * 查询ROLL房间信息
     * 
     * @param rollId ROLL房间信息ID
     * @return ROLL房间信息
     */
    public TRoll selectTRollById(String rollId);

    /**
     * 查询ROLL房间信息列表
     * 
     * @param tRoll ROLL房间信息
     * @return ROLL房间信息集合
     */
    public List<TRollBackVo> selectTRollList(TRollBackVo tRoll);

    /**
     * 新增ROLL房间信息
     * 
     * @param tRoll ROLL房间信息
     * @return 结果
     */
    public Response insertTRoll(TRoll tRoll);

    /**
     * 修改ROLL房间信息
     * 
     * @param tRoll ROLL房间信息
     * @return 结果
     */
    public Response updateTRoll(TRoll tRoll);

    /**
     * 批量删除ROLL房间信息
     * 
     * @param rollIds 需要删除的ROLL房间信息ID
     * @return 结果
     */
    public int deleteTRollByIds(String[] rollIds);

    /**
     * 批量停用ROLL房间信息
     * @param rollIds
     * @return
     */
    public int stopTRollByIds(String[] rollIds);

    /**
     * 批量启用ROLL房间信息
     * @param rollIds
     * @return
     */
    public int enableTRollByIds(String[] rollIds);

    /**
     * 删除ROLL房间信息信息
     * 
     * @param rollId ROLL房间信息ID
     * @return 结果
     */
    public int deleteTRollById(String rollId);

    /**
     * 获取所有启用、并且已上线或已结束的ROLL房列表
     * @return
     */
    public Map<String, Object> selectTRollListAll(String userId,String rollName);

    /**
     * 分页获取所有启用、并且已上线或已结束的ROLL房列表
     * @return
     */
    public List<TRollVo> selectTRollPageListAll(PageInfoParamVo pageInfoParamVo);

    /**
     * 根据ROLLID 批量获取ROLL房信息
     * @param rollIds
     * @return
     */
    public List<TRoll> batchQueryTRollList(String[] rollIds);

    /**
     * ROLL房间人数、饰品统计
     * @param rollList
     * @param userId
     * @return
     */
    public  Map<String,Object> countTRollList(List<TRollVo> rollList,String userId);

    /**
     * ROLL房详情 饰品列表、参与人列表
     * @param rollId
     * @return
     */
    public Response<TRollVo> getRollInfo(String userId,String rollId);


    /**
     * 用户参与ROLL房间
     * @param rollId
     * @param userId
     * @return
     */
    public Response joinRoll(String rollId,String userId,String rollPwd);

    /**
     * 机器人参与ROLL房间
     * @param rollId
     * @param userId
     * @return
     */
    public Response joinRollRobot(String rollId,String userId,String rollPwd);
//    /**
//     * ROLL房开奖
//     * @param tRoll
//     */
//    public void automaticLottery(TRoll tRoll) throws Exception;


    /**
     * ROLL房hash开奖
     * @param tRoll
     */
    public void automaticLotteryHash(TRoll tRoll) throws Exception;


    /**
     * 上线
     * @param rollIds
     * @return
     */
    public int goOnline(String[] rollIds);

    /**
     * 结束
     * @param rollIds
     * @return
     */
    public int closure(String[] rollIds);


    /**
     * ROLL房统计
     * @return
     */
    public Map<String,Object> rollCount(String startTime, String endTime);

    /**
     * 首页roll房间
     *
     * @return
     */
    public List<TRollHomePageVo> selectHomePageDisplay();

    /**
     * 我参与的Roll房间列表
     *
     * @return
     */
    public List<TRollVo> selectMyRollPageList(PageInfoParamVo pageInfoParamVo);


    /**
     * 机器人参与roll房下拉框
     *
     * @return
     */
    public List<TRoll> robotRollList();


}
